﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BD_projekt
{
    public class MicroarrayVersion
    {
        #region Internal classes
        public abstract class FactorsSamplesBase
        {
            int id;
            string name, value;
        }

        public abstract class SpeciesTypesBase
        {
            int id;
            string name;
        }

        public class ExperimentalFactors : FactorsSamplesBase
        { }

        public class SampleAttributes : FactorsSamplesBase
        { }

        public class Species : SpeciesTypesBase
        { }

        public class ExperimentTypes : SpeciesTypesBase
        { }
        #endregion

        #region Variables
        private Guid uniqueId;
        private int microarrayId;
        private int assaysCount;
        private string code, title, description, contact, citations;
        private DateTime releaseDate, lastUpdateDate;
        public string processDataPath, rawDataPath, otherDataPath;

        private List<ExperimentalFactors> expFactorsList;
        private List<ExperimentTypes> expTypesList;
        private List<Species> speciesList;
        private List<SampleAttributes> sampleAttrList;
        #endregion

        #region Properties
        public Guid UniqueId
        {
            get { return uniqueId; }
            set { uniqueId = value; }
        }
        public int MicroarrayId
        {
            get { return microarrayId; }
            set { microarrayId = value; }
        }        
        public int AssaysCount
        {
            get { return assaysCount; }
            set { assaysCount = value; }
        }       
        public string Citations
        {
            get { return citations; }
            set { citations = value; }
        }
        public string Contact
        {
            get { return contact; }
            set { contact = value; }
        }
        public string Description
        {
            get { return description; }
            set { description = value; }
        }
        public string Title
        {
            get { return title; }
            set { title = value; }
        }
        public string Code
        {
            get { return code; }
            set { code = value; }
        }       
        public DateTime LastUpdateDate
        {
            get { return lastUpdateDate; }
            set { lastUpdateDate = value; }
        }
        public DateTime ReleaseDate
        {
            get { return releaseDate; }
            set { releaseDate = value; }
        }  
        public List<ExperimentalFactors> ExpFactorsList
        {
            get { return expFactorsList; }
            set { expFactorsList = value; }
        }       
        public List<ExperimentTypes> ExpTypesList
        {
            get { return expTypesList; }
            set { expTypesList = value; }
        }        
        public List<Species> SpeciesList
        {
            get { return speciesList; }
            set { speciesList = value; }
        }       
        public List<SampleAttributes> SampleAttrList
        {
            get { return sampleAttrList; }
            set { sampleAttrList = value; }
        }
        #endregion

        #region Constructors
        public MicroarrayVersion()
        {
            expFactorsList = new List<ExperimentalFactors>();
            expTypesList = new List<ExperimentTypes>();
            speciesList = new List<Species>();
            sampleAttrList = new List<SampleAttributes>();
        }
        #endregion
    }
}
